<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
        // 高阶函数的意义:高阶函数用来抽象通用的问题,让我们只需要关注于目标,忽略细节;
        // 可以让函数变得灵活[比如filter函数中,fn就可以根据实际情况自定义.]
        
        // 面向过程的方式
        let arr = [1,2,3];
        for(let i = 0;i<arr.length;i++) {
            console.log(arr[i]);
        };
        //高阶函数的方式:使用封装的函数,直接使用功能,省略具体的实现过程
        let array1 = [1,2,3,56,8];
        array1.forEach(item => {
            console.log(item);
        });


        function filter (array,fn) {  
            let results = [];
            for(let i = 0;i<array.length;i++) {
                if(fn(array[i])) {//如果数组中的这个元素满足条件fn，就把该元素存储在数组results中
                    results.push(array[i]);
                }
            }
            return results;
        }
        let r = filter(array1, item => {
            return item % 2 === 0;
        });
        console.log(r);
        

    </script>
</body>
</html>